首页 > 试题广场 >

记负均正II

[编程题]记负均正II
  • 热度指数:226942 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
输入 n 个整型数,统计其中的负数个数并求所有非负数的平均值,结果保留一位小数,如果没有非负数,则平均值为0
本题有多组输入数据,输入到文件末尾。

数据范围: ,其中每个数都满足

输入描述:

输入任意个整数,每行输入一个。



输出描述:

输出负数个数以及所有非负数的平均值

示例1

输入

-13
-4
-7

输出

3
0.0
示例2

输入

-12
1
2

输出

1
1.5
#这个题需要注意对文件结束的处理。以往的题目都是有确定数量的输入,可以在try里按既定数量获取input(),这一题是不定长的输出,只能判断文件结束符。方法见except

p_l = []
n_l = []

while True:
    try:
        i = int(input())
        if i >= 0:
            p_l.append(i)
        else:
            n_l.append(i)
    except EOFError: ###重点重点重点,在python中对文件结束符的判断,可以用except EOFError来获取。没有碰到结束符之前,只记录输入,碰到结束符之后,处理输出。
        print(len(n_l))
        if len(p_l)>0:
            print(round(sum(p_l)/len(p_l),1))
        else:
            print('0.0')
        break
发表于 2022-09-04 15:44:22 回复(0)
z=0
nz=0
nf=0
while True:
    try:
        a=int(input())
        if a<0:
            nf=nf+1
        else:
            z=z+a
            nz=nz+1
    except:
        break
if nz==0:
    print(nf)
    print(0)
else:
    print(nf)
    print('{:.1f}'.format(z/nz))
发表于 2022-08-31 02:23:34 回复(0)
ff = []
fs = []
while True:
    try:
        s = int(input())
        if s<0:
            fs.append(s)
        else:
            ff.append(s)
    except:
        print(len(fs))
        sums = sum(ff)
        if len(ff)==0:
            print(0.0)
        else:
            averge = round(sums/len(ff),1)
            print(averge)
        break

发表于 2022-08-11 09:41:06 回复(0)
import sys
lines = sys.stdin.readlines()
lst = []
for line in lines:
    line.replace('/n', '')
    lst.append(int(line))
s, z, f = 0, 0, 0
for x in lst:
    if x > 0:
        z += 1
        s += x
    elif x < 0:
        f += 1
if not z:
    print(f)
    print(0.0)
else:
    print(f)
    print('%.1f'%(s/z))

发表于 2022-07-27 18:37:10 回复(0)
c = []
d = []     
while True:
    try:
        a = int(input())
        if a <0:
            c.append(a)
        else:
            d.append(a)
    except:
        break
print(len(c))
if len(d) == 0:
    print(0.0)
else:
    sum = 0
    for i in range(len(d)):
        sum = sum+d[i]
    avg =round((sum/len(d)),1) 
    print(avg)
       

        
        

发表于 2022-07-24 20:25:57 回复(0)
num = 0
lst = []
while True:
    try:
        n = int(input())
        if n < 0:
            num += 1
        else:
            lst.append(n)
    except:
        break
print(num)
if lst == []:
    print('0.0')
else:
    print(round(sum(lst)/len(lst), 1))

发表于 2022-07-20 01:13:27 回复(0)
# coding:utf-8
# Author:donghai
# Date:20220624
# Subject:记负均正II
lis = []
zhengshu = []
fushu = 0
while True:
    try:
        num = int(input())
        lis.append(num)
    except:
        break
for i in range(len(lis)):
    if lis[i] > 0:
        zhengshu.append(lis[i])
    else:
        fushu += 1
print(fushu)
if len(zhengshu) != 0:
    print(round(sum(zhengshu)/len(zhengshu),1))
else:
    print("0.0")
发表于 2022-06-24 12:46:58 回复(0)

#1.container outside of loop
l_pos=[]
l_neg=[]
count_pos=0 #2.using count var cound be eliminated, but just for better understanding
count_neg=0
while True:
    try:
        n=int(input())        
        if n>=0:
            count_pos+=1
            l_pos.append(n)
        else:
            count_neg+=1
            l_neg.append(n)
   #3. it is important to have "except:" here rather than placing at the end         
    except:
        print(count_neg)
        
        if count_pos==0:
            print('0.0')
        else:
            avg=(sum(l_pos))/len(l_pos)
            print(round(avg,1))   
        break
发表于 2022-06-16 15:10:43 回复(0)
感觉怪怪的,但是能跑就行:
def num_get():
    ssr = []
    while True:
        try:
            ssr.append(int(input()))
        except:
            break
    return ssr

def code_end():
    s = num_get()
    s0 = [x for x in s if x < 0]
    s1 = [x for x in s if x > 0]
    
    print(len(s0))
    print(round(sum(s1)/len(s1), 1) if s1 else 0.0)

code_end()


发表于 2022-06-05 16:16:10 回复(0)
# 本题特殊的地方在于,要元素读取完之后,在except里break之前进行打印操作
#这个题需要注意对文件结束的处理。以往的题目都是有确定数量的输入,
#可以在try里按既定数量获取input(),这一题是不定长的输出,只能判断文件结束符。
#方法见except
p_l = [] #正数列表
n_l = [] #负数列表
while True:
    try:
        i = int(input())
        if i >= 0:
            p_l.append(i)
        else:
            n_l.append(i)
    except EOFError: ###重点重点重点,在python中对文件结束符的判断,可以用except EOFError来获取。没有碰到结束符之前,只记录输入,碰到结束符之后,处理输出。
        print(len(n_l))
        if len(p_l)>0:
            print(round(sum(p_l)/len(p_l),1))
        else:
            print('0.0')
        break
#考点 : 列表存储

发表于 2022-05-02 19:59:51 回复(0)
import sys
c1=0
c2=0
sum=0.0
ave=0.0
for line in sys.stdin:
    x=int(line[:len(line)-1])
    if x<0:
        c1+=1
    else:
        c2+=1
        sum+=x
if c2>0:
    ave=int(sum/c2*10+0.5)/10
print(c1)
print(ave)



发表于 2022-04-19 13:55:12 回复(0)
    try:#########
        record.append(int(input())) #####循环输入 无次数#########
    except:#########
        neg_count=0
        pos_count=0
        sum=0
        for i in record:
            if i>=0:
                pos_count+=1
                sum+=i
            else:
                neg_count+=1
        print(neg_count)
        if pos_count>0:
             print(round(sum/pos_count,1))
        else:
             print(0.0)
        break   #########
发表于 2022-04-05 10:11:13 回复(0)
这题凭什么是较难啊?
发表于 2022-03-25 22:36:37 回复(0)
a=0#fu
b=0#zheng
c=0#zheng shu
while 1:
    try:
        n=eval(input())
        if n<0:
            a+=1
        else:
            b+=1
            c+=n 
    except:
        break
print(a)
print('{:.1f}'.format(c/b) if b>0 else '0.0')

发表于 2022-02-10 19:07:37 回复(0)
l1=[]
l2=[]
while True:
    try:
        a=int(input())
        if a<0:
            l1.append(a)
        else:
            l2.append(a)
    except:
        break
print(len(l1))
if l2==[]:
    print('0.0')
else:
    print(round(sum(l2)/len(l2),1))

发表于 2021-12-10 10:06:08 回复(0)
list1=[]
while True:
    try:
        num=int(input())
        list1.append(num)
    except:
        break
negative=0
positive=[]
for i in list1:
    if i<0:
        negative+=1
    else:
        positive.append(i)
ans=float(0.0)
if len(positive)==0:
    ans=0.0
else:
    ans=round(float(sum(positive)/len(positive)),1)       
print(negative)
print(ans)

发表于 2021-11-30 17:56:54 回复(0)
numP = []
numN = []
while True:
    try:
        n = int(input().strip())
        if n < 0:
            numN.append(n)
        else:
            numP.append(n)
    except:
        break

print(len(numN))
avg = sum(numP)/len(numP) if len(numP)>0 else 0
print(round(avg, 1) if avg != 0 else '0.0') 

发表于 2021-11-17 22:43:58 回复(0)
l = []
while True:
    try:
        line = int(input())
        l.append(line)
    except:
        break
cnt = 0 #统计负数个数
l1 = [] #存放非负数的列表
for i in l:
    if i < 0:
        cnt += 1
    else:
        l1.append(i)
print('%d' %cnt)
if len(l1) != 0:
    num = sum(l1)/len(l1)
    print('%.1f' %num)
else:
    num = 0
    print('%.1f' %num)
发表于 2021-10-07 12:24:16 回复(0)

问题信息

难度:
26条回答 35302浏览

热门推荐

通过挑战的用户

查看代码